package com.tool.cn.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.Properties;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.tool.cn.use.ObjectInit;


/**
 * 加载配置文件
 * 
 * @author wangzh
 * 2017年11月28日 上午11:25:18
 */
public class PropUtil{
	
	private final static Logger log = LoggerFactory.getLogger(PropUtil.class); 
	
	
	/**
	 * 全路径读取properties文件
	 * @param path
	 * @return
	 */
	public static Properties getProperties(String path) {
		return getProperties(path, "utf-8");
	}
	/**
	 * 全路径读取properties文件
	 * @param configName
	 * @return
	 */
	public static Properties getProperties(String path,String encoded){
		Properties configProperties=null;
		
		try(InputStreamReader input = new InputStreamReader(new FileInputStream(path), encoded)) {
			configProperties= new Properties();
			configProperties.load(input);
			
		} catch(Exception e) {
			log.error("处理文件异常:"+path,e);
		}
		return configProperties;	
	}
	
	/**
	 * 配合config 使用
	 * @param key
	 * @param data
	 * @return
	 */
	public static String checkDataPath(String key,String data) {
		if(StringUtil.isEmpty(data)) {
			log.error("{} Set {}  is Null",ObjectInit.properFile,key);
			System.exit(0);
		}
		
		if(!new File(data).exists()) {
			log.warn("{} Set {}  Path {} No Exist, Will Create",ObjectInit.properFile,key,data);
			FileUtil.checkAndMkdirPath(data);
		}
		return StringUtil.checkPath(data);
	}
	
	/**
	 * 验证源目录是否存在
	 * @param key
	 * @param data
	 * @return
	 */
	public static String checkSourcePath(String key,String data) {
		if(StringUtil.isEmpty(data)) {
			log.error("{} Set {}  is Null",ObjectInit.properFile,key);
			System.exit(0);
		}
		
		if(!new File(data).exists()) {
			log.error("{} Set {}  Path {} No Exist",ObjectInit.properFile,key,data);
			System.exit(0);
		}
		return StringUtil.checkPath(data);
	}
	
	/**
	 * 效验字符串是否为空
	 * @param key
	 * @param data
	 * @return
	 */
	public static String checkDataIsNull(String key,String data) {
		if(StringUtil.isEmpty(data)) {
			log.error("{} Set {}  is Null",ObjectInit.properFile,key);
			System.exit(0);
		}
		return data;
	}

}
